This specification relates to digital data processing and, in particular, data storage, access, and maintenance.
Important data is conventionally stored on one or more storage devices that have the potential to fail. The data can be backed-up and stored redundantly so that the data can be recovered if a storage device fails. Conventional data centers can store large amounts of data. Some data is stored redundantly across multiple data centers so that even if an entire data center fails the data can be recovered.
Data can be stored using error-detecting codes. A conventional error-detecting code adds extra data to the data that enables detection of certain errors in the data. One example of an error-detecting code is a cyclic redundancy check (CRC). CRC codes are used to detect failures on storage devices (e.g., hard disk drives).
Data can also be stored using error-correcting codes. A conventional error-correcting code adds extra data to the data that enables correction of errors in the data. The number of errors that can be corrected is limited by the amount of extra data that is added. Examples of error-correcting codes include Reed-Solomon codes.